package co.edu.udea.iw.dao;

import java.util.List;

import co.edu.udea.iw.dto.TipoDocumento;
import co.edu.udea.iw.dto.Usuario;
import co.edu.udea.iw.exception.IWDaoException;

/**
 * Interface que define los metodos que va a proveer el dao de Usuario
 * 
 * @author Santiago Ruiz
 * @author Bladimir Velez
 *
 */
public interface UsuarioDAO {
	/**
	 * Entrega los datos de un usuario dado su identificador
	 * 
	 * @param tipoD
	 *            String que identificador del tipo de dispositivo
	 * @return instancia con los datos del tipo de dispositivo obtenido, si no
	 *         existe el tipo de dispositivo retorna null.
	 * @throws IWDaoException
	 */
	public Usuario obtenerUsuario(int numeroDocumento,
			TipoDocumento tipoDocumento) throws IWDaoException;

	/**
	 * Entrega la lista de todos los usuarios existentes en base de datos
	 * 
	 * @return lista usuarios
	 * @throws IWDaoException
	 */
	public List<Usuario> obtenerUsuarios() throws IWDaoException;

	/**
	 * Agrega un usuario
	 * 
	 * @param usuario
	 *            Usuario a agregar
	 * @return void
	 * @throws IWDaoException
	 */
	public void agregarUsuario(Usuario usuario) throws IWDaoException;

	/**
	 * Elimina un usuario
	 * 
	 * @param usuario
	 *            Usuario a eliminar
	 * @return void
	 * @throws IWDaoException
	 */
	public void eliminarUsuario(Usuario usuario) throws IWDaoException;

	/**
	 * Actualiza un usuario
	 * 
	 * @param usuario
	 *            Usuario a actualizar
	 * @return void
	 * @throws IWDaoException
	 */
	public void actualizarUsuario(Usuario usuario) throws IWDaoException;

}
